package leetcode_300;

/**
 *@author 周杨
 *BullsAndCows_299 猜数字游戏 出现在哪个位置 正确与否
 *describe:hash解决 AC 97% 规则我也不是很懂
 *2018年6月29日 上午11:20:00
 */
public class BullsAndCows_299 {
	public String getHint(String secret, String guess) {
        if(secret == null || secret.length() == 0)
            return "0A0B";
        int bullsNo = 0;
        int cowsNo = 0;
        int[] record = new int[10];//用hash记录每个数字出现的次数
        for(int i = 0; i < secret.length(); i++)
            record[secret.charAt(i)-'0']++;
        for(int i = 0; i < guess.length(); i++){
            int index = guess.charAt(i)-'0';//是哪个数
            if(record[index] > 0){
                record[index]--;
                if(secret.charAt(i)-'0' == index)
                    bullsNo++;
                else cowsNo++;
            }else {
                /**
                 * this is for the situation like ("1122","1222")
                 */
                if(secret.charAt(i)-'0' == index){
                    bullsNo++;
                    cowsNo--;
                }
            }
        }
        return bullsNo+"A"+cowsNo+"B";
    }
}
